Methods and systems for storing data in memory using zoning

ABSTRACT

Methods and systems for storing data in a memory system with different levels of redundancy are disclosed. Methods and systems consistent with the present invention provide allow a redundancy level to be associated with received data, wherein associating the redundancy level of the data includes determining a desired level of protection for that data and determining the redundancy level based on the desired level of protection. A zone within a memory system is located that has a redundancy level that matches the redundancy level of the data, and the data is stored in the located zone with the desired redundancy level.

CROSS-REFERENCE TO RELATED APPLICATIONS

This present disclosure is a continuation of U.S. application Ser. No.11/947,581 (now U.S. Pat. No. 7,958,433), filed on Nov. 29, 2007, whichclaims priority under 35 U.S.C. §119(e) to U.S. Provisional ApplicationNo. 60/867,973, filed on Nov. 30, 2006.

TECHNICAL FIELD

The present disclosure relates generally to the storage of data in amemory system and, more particularly, to storing data in zones of amemory with different zone redundancy levels.

BACKGROUND

Memory systems typically store data with some level of redundancy.Redundancy helps protect the integrity of data by providing a means forverifying data in the event of a problem during storage or if databecomes corrupted while being stored. Memory systems employ errorcorrection codes (ECC) offering varying levels of protection for data.In general, data stored with a higher level of redundancy means that alarger set of redundancy data is stored and the data is afforded ahigher level of protection. Increasing redundancy acts to protect thedata by increasing the probability that corrupted data will be backed upwith uncorrupted, redundantly stored data.

However, while data reliability may be increased by maximizing theamount of redundancy data stored in memory, this policy has drawbacks.For example, increased redundancy results in a-need for more storagespace and consequently higher storage costs. Higher redundancy meansthat less of the memory is available for use by the system, as half ormore of the memory must be reserved for redundant storage.

Conventional memory systems store data with a uniform level ofredundancy. These systems are inefficient because all data may not needthe same level of protection. However, very often all data is stored ata high level of redundancy to reduce the risk that the small amount ofvery important data may be lost. What is needed is a method and a systemfor storing data in a memory system with different levels of redundancy.

SUMMARY

Consistent with principles of the invention, methods, systems, andapparatuses for storing data are presented. Data is associated with adata redundancy level. A zone within a memory system with a zoneredundancy level that matches the redundancy level of the data islocated, the memory being partitioned into a plurality of zones witheach of the plurality of zones associated with a respective redundancylevel. The data is then stored in the located zone.

Additionally or alternatively, in certain methods, systems andapparatuses for storing data, data is received from a computer system. Adata redundancy level is associated to the received data, whereinassociating the data redundancy level to the data includes determining adesired level of protection for that data and determining the dataredundancy level based on the desired level of protection. A zone withina memory system with a zone redundancy level that matches the redundancylevel of the data is located, the memory being partitioned into aplurality of zones with each of the plurality of zones associated with azone redundancy level. The data stored in the located zone.

Further memory systems for storing data are also presented that includea memory that is partitioned into a plurality of zones, each of theplurality of zones associated with a redundancy level, and a memorycontroller. The memory controller associates a data redundancy levelwith the data, locates a zone within a memory system with a zoneredundancy level that matches the data redundancy level of the data, thememory being partitioned into a plurality of zones with each of theplurality of zones associated with a respective zone redundancy level,and stores the data in the located zone.

Still further memory systems for storing data are presented whichinclude a memory partitioned into a plurality of zones, each of theplurality of zones associated with a redundancy level, and a memorycontroller. The memory controller determines a data redundancy levelassociated with received data, the data redundancy level of the datarepresenting a desired level of protection for the data, locates a zonewithin the memory with a data redundancy level that matches the dataredundancy level of the data, and stores the data in the located zone.

Additionally or alternatively, systems for storing data are presentedwhich include means for associating a data redundancy level with thedata, means for locating a zone within a memory system with a zoneredundancy level that matches the data redundancy level of the data, thememory being partitioned into a plurality of zones with each of theplurality of zones associated with a respective zone redundancy level,and means for storing the data in the located zone.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a diagram of a memory storage device using zones forstoring data with varying levels of redundancy, consistent with someembodiments of the present invention.

FIG. 2 is a flow chart showing an exemplary process for redundantlystoring data in a memory device using zones, consistent with someembodiments of the present invention.

DETAILED DESCRIPTION

Reference will now be made in detail to embodiments of the presentinvention, examples of which are illustrated in the accompanyingdrawings. Wherever possible, the same reference numbers will be usedthroughout the drawings to refer to the same or like parts.

In computer systems, it is frequently the case that not all data storedin memory is of equal importance such that it needs to be maintainedwith the same level of reliability or redundancy. Data of greaterimportance may be stored with a greater data redundancy level than dataof lesser importance. Using a personal computer as an example, it islikely more important to the user that software programs, look-uptables, or other core programs not be corrupted as this would disturboperation of the computer. Furthermore, a user might not want to storeother, less important, data with the same level of redundancy as thecore programs. However, in conventional memory systems, data is storedwith a uniform level of redundancy making it difficult to balance thelevel of protection with cost and other concerns.

FIG. 1 shows a diagram of a memory storage device using zones forstoring data with varying levels of redundancy, consistent with someembodiments of the present invention. FIG. 1 shows a memory system 100,a computer system 110, a memory controller 120, a zone 130, a zone 140,a zone partitioning system 150, interface busses 160, 170 and 180, astorage array 190, and a storage array 195. Memory system 100 may be,for example, a solid state memory system, a redundant array ofindependent disks (RAID), or a flash memory. For purposes of thisdisclosure, a “disk” is any non-volatile, randomly accessible,rewritable mass storage device that has the ability to detect its ownstorage failures. Examples of a disk may include rotating magnetic andoptical disks, solid-state disks, and non-volatile electronic storageelements (such as PROMs, EPROMs, and EEPROMs). The term “disk array”means a collection of disks, the hardware (such as a controller)required to connect them to one or more host computers, and managementsoftware used to control the operation of the physical disks and presentthem as one, or more virtual disks to the host operating environment. A“virtual disk” is an abstract entity realized in the disk array by themanagement software.

Memory system 100 may be coupled to computer system 110 via interfacebus 180. Computer system 110 may send data to memory system 100, and mayalso receive data from memory system 100. A data redundancy level may beassociated with the data. Memory system 100 may be partitioned into twoor more zones 130 and 140. In at least one embodiment, the configurationof memory partitioning into zones 130 and 140 is established duringsystem setup.

Memory controller 120 may be coupled to zones 130 or 140 via one or moreinterface buses 160 and 170, such as a small computer system interface(SCSI). Zone partitioning system 150 may be embodied as a separatecomponent of memory system 100, configured within memory controller 120,or configured within computer system 110 to provide a means forcontrolling memory storage and zone redundancy levels, and fortransferring data among various zone redundancy levels. Once memorysystem 100 is partitioned into zones A and B 130 and 140 data may bestored in one or more zones 130 and 140.

A zone redundancy level may be associated with one or more of zones 130and 140. In some embodiments, all zones of memory system 100 areassociated with a zone redundancy level. Zone redundancy levels mayinclude mirror or parity zone redundancy levels, or may be set to zero.The zone redundancy level of for example, zone 130 may be greater thanthe zone redundancy level of, for example, zone 140. A zone or zones 130and/or 140 may be associated with a default zone redundancy level, forexample, zero, or one. A zone with a greater zone redundancy level mayprovide improved protection for the data it stores.

The zone redundancy level of a zone, for example zone 130 or 140, maydetermine the level of redundancy with which data is stored in zone 130or 140. A zone 130 or 140 with a greater zone redundancy level may storemore redundancy data than a zone 130 or 140 with a lower zone redundancylevel. For example, if the zone redundancy level of zone 130 is fourthen four times as much redundancy data may be stored in zone 130.Likewise, if the zone redundancy level for zone 130 is two, then twotimes as much redundancy data may be stored.

Memory controller 120 may be coupled to storage arrays 190 and 195 ofzones 130 and 140 respectively via one or more interface buses 160 and170, such as a small computer system interface (SCSI). Storage array 190and/or 195 may be associated with a zone redundancy level and mayinclude a RAID.

FIG. 2 is a flow chart showing an exemplary process 200 for storing datain a memory device with varying levels of redundancy using zones,consistent with some embodiments of the present invention. In step 210,a data redundancy level is associated with data. Data may be assigned adata redundancy level by, for example, a user, a host, or a memorycontroller. A data redundancy level assigned to the data may also beprogrammable. For example, a user may be allowed to specify a dataredundancy level for various types of data. Typically a user will choosea higher level of redundancy for more important data. In anotherexample, a host or memory controller specifies a protection level ofvarious types of data.

In at least one embodiment, the data redundancy level associated withdata is based on the desired amount of protection for the data. Dataredundancy level for data may also be assigned based on the type ofdata. If the data type is available, the data may be assigned a dataredundancy level based on the data redundancy level assigned for thatparticular type. In other words, the type of the data may be determined,and a data redundancy level may be associated with the data based on itsdetermined type. For example, a high data redundancy level may beassociated with software programs, or operating system data for apersonal computer, while a low data redundancy level may be associatedwith music files stored on the computer.

In step 220, a zone with a zone redundancy level is located within amemory system. The zone may be located by a memory controller and may beassociated with a zone redundancy level. In step 230, it is determinedwhether the zone redundancy level of the located zone matches the zoneredundancy level associated with the data. If the zone redundancy levelof the located zone matches the zone redundancy level of the data, itmay be stored in the located zone (step 240) and the process may end. Ifthe zone redundancy level of the located zone does not match the zoneredundancy level associated with the data, it may not be stored in thelocated zone. Data may be stored so that the storage space of the memorysystem is maximized. Maximizing the storage space of the memory systemmay include associating a data redundancy level with the data bydetermining a minimum level of protection for the data and associatingthe data with a data redundancy level based on the minimum level ofprotection.

In one embodiment, the data redundancy level of the stored data maychange, over time, based on one or more criteria. The data may then bemoved from one zone of the memory system to another zone of the memorysystem based on its changed data redundancy level. Exemplary criteriamay include a desired level of protection for the data, the length oftime the data is stored in the memory system, or the type of data. Forexample, a user may set the criteria of decreasing the data redundancylevel of tax information after seven years.

In at least one embodiment, the zones of the memory system may bebalanced so that data is appropriately stored in its respective zone.The balancing of zones may be user programmable or may be automaticallyimplemented according to one or more criteria. For example, if storeddata becomes more valuable with time it may be moved from a zone with alow zone redundancy level to a zone with a high zone redundancy level astime passes. Additionally or alternatively, the data redundancy level ofthe stored data may be gradually increased or decreased over time.Stored data may be moved from one zone to another as the data redundancylevel increases or decreases. In one embodiment, zones of the memorysystem may be balanced to maximize storage space of the memory system.

The systems and methods disclosed herein are not inherently related toany particular computer or other apparatus, and may be implemented by asuitable combination of hardware, software, and/or firmware. Softwareimplementations may include one or more computer programs. A computerprogram is a set of instructions readable and executable by a processorand can be written in any form of programming language, includingcompiled or interpreted languages, and it can be deployed in any form,including as a stand alone program or as a module, component,subroutine, or other unit suitable for use in a computing environment. Acomputer program can be deployed to be executed on one computer or onmultiple computers at one site or distributed across multiple sites andinterconnected by a communication network. Software may also beimplemented as a computer program product, i.e., one or more computerprograms tangibly embodied in an information carrier, e.g., in a machinereadable storage device or in a propagated signal, for execution by, orto control the operation of, data processing apparatus, e.g., aprogrammable processor, a computer, or multiple computers.

It will be apparent to those skilled in the art that variousmodifications and variations can be made in the methods of the presentinvention and in construction of this circuit without departing from thescope or spirit of the invention.

Other embodiments of the invention will be apparent to those skilled inthe art from consideration of the specification and practice of theinvention disclosed herein. It is intended that the specification andexamples be considered as exemplary only, with a true scope and spiritof the invention being indicated by the following claims.

1. A method of storing data in a memory, wherein the memory ispartitioned into a plurality of zones, and wherein each zone isassociated with a respective redundancy level with which data is to bestored in the zone, the method comprising: receiving data to be storedin the memory; associating a redundancy level with the data; locating afirst zone of the plurality of zones within the memory such that theredundancy level associated with the first zone matches the redundancylevel associated with the data; storing the data in the first zone; andsubsequent to the data being stored in the first zone, in response to achange in the redundancy level associated with the data stored in thefirst zone, moving the data from the first zone to a second zone of theplurality of zones, wherein the redundancy level associated with thesecond zone corresponds to the change in the redundancy level associatedwith the data, wherein the change in the redundancy level associatedwith the data is based at least in part on a length of time that thedata is stored in the first zone.
 2. The method of claim 1, wherein thememory system is a solid state memory system.
 3. The method of claim 1,wherein associating the redundancy level with the data comprises:determining a desired level of protection for the data; and determiningthe redundancy level to associate with the data based on the desiredlevel of protection for the data.
 4. The method of claim 1, wherein:associating the redundancy level with the data further comprisesdetermining a minimum level of protection for the data, and associatingthe redundancy level with the data based on the determined minimum levelof protection for the data; and storing the data in the first zonecomprises storing only data required to meet the minimum level ofprotection for the data so that storage space of the memory system ismaximized.
 5. The method of claim 1, wherein at least one criterion forassociating the redundancy level with the data includes a type of thedata.
 6. The method of claim 1, wherein the memory system is one of (i)a flash memory, and (ii) a solid disk array comprising a plurality ofdisks.
 7. The method of claim 6, wherein the solid disk array is anon-volatile, randomly accessible, rewriteable mass storage device. 8.The method of claim 6, wherein the solid disk array includes at leastone of (i) rotating magnetic disks, (ii) optical disks, (iii) solidstate disks, (iv) non-volatile electronic storage elements, and (v) aredundant array of independent disks (RAID).
 9. The method of claim 1,further comprising receiving the data from a computer system.
 10. Amemory system for storing data, the memory system comprising: a memorypartitioned into a plurality of zones, each of the plurality of zonesassociated with a respective redundancy level with which data is to bestored in the zone; and a memory controller configured to receive datato be stored in the memory, associate a redundancy level with the data,locate a first zone of the plurality of zones within the memory suchthat the redundancy level associated with the first zone matches theredundancy level associated with the data, store the data in the firstzone, and subsequent to the data being stored in the first zone, inresponse to a change in the redundancy level associated with the datastored in the first zone, move the data from the first zone to a secondzone of the plurality of zones, wherein the redundancy level associatedwith the second zone corresponds to the change in the redundancy levelassociated with the data, wherein the change in the redundancy levelassociated with the data is based at least in part on a length of timethat the data is stored in the first zone.
 11. The memory system ofclaim 10, wherein the memory system is a solid state memory system. 12.The memory system of claim 10, wherein the memory controller is furtherconfigured to associate the redundancy level with the data by:determining a desired level of protection for the data; and determiningthe redundancy level to associate with the data based on the desiredlevel of protection for the data.
 13. The memory system of claim 10,wherein: the memory controller is further configured to associate theredundancy level with the data by determining a minimum level ofprotection for the data, and associating the redundancy level with thedata based on the determined minimum level of protection for the data;and the memory controller is further configured to store the data in thefirst zone by storing only data required to meet the minimum level ofprotection for the data so that storage space of the memory system ismaximized.
 14. The memory system of claim 10, wherein at least onecriterion for associating the error correction code with the dataincludes a type of the data.
 15. The memory system of claim 10, whereinthe memory system is one of (i) a flash memory, and (ii) a solid diskarray comprising a plurality of disks.
 16. The memory system of claim15, wherein the solid disk array is a non-volatile, randomly accessible,rewriteable mass storage device.
 17. The memory system of claim 15,wherein the solid disk array includes at least one of (i) rotatingmagnetic disks, (ii) optical disks, (iii) solid state disks, (iv)non-volatile electronic storage elements, and (v) a redundant array ofindependent disks (RAID).
 18. The memory system of claim 10, wherein thememory controller is further configured to receive the data from acomputer system.
 19. A method comprising: partitioning a memory systeminto a plurality of zones, wherein each of the plurality of zones isassociated with a respective redundancy level with which data is to bestored in the zone; associating a first redundancy level with data to bestored in the memory system; in response to associating the firstredundancy level with the data, selecting a first zone from theplurality of zones such that the redundancy level associated with thefirst zone matches the first redundancy level; in response to selectingthe first zone, storing the data in the first zone; subsequent tostoring the data in the first zone and based at least in part on alength of time that the data is stored in the first zone, changing theredundancy level associated with the data from the first redundancylevel to a second redundancy level; in response to changing theredundancy level associated with the data from the first redundancylevel to a second redundancy level, selecting a second zone from theplurality of zones such that the redundancy level associated with thesecond zone matches the second redundancy level; and in response toselecting the second zone, (i) deleting the data from the first zone,and (ii) storing the data in the second zone.